package org.example.service;

import org.example.entity.Company;
import java.util.List;
import java.util.Map;

/**
 * 公司服务接口
 */
public interface CompanyService {
    
    /**
     * 获取用户可用的公司列表
     * @param userId 用户ID
     * @return 公司列表
     */
    List<Company> getUserCompanies(Long userId);
    
    /**
     * 获取用户在各公司的权限信息
     */
    List<Map<String, Object>> getUserCompanyPermissions(Long userId);
    
    /**
     * 获取用户可访问的租户列表（包含当前租户）
     */
    List<Map<String, Object>> getAvailableTenants(Long userId, Long currentCompanyId);
    

    /**
     * 分页查询公司列表
     */
    com.baomidou.mybatisplus.core.metadata.IPage<org.example.entity.Company> pageCompanies(
            Long current,
            Long size,
            String keyword,
            Integer status
    );


    /** 更新公司 */
    boolean update(org.example.entity.Company company);

    /** 启用/禁用公司 */
    boolean updateStatus(Long companyId, Integer status);
    
    /** 获取行业列表 */
    List<Map<String, Object>> getIndustries();
    
    /** 创建公司和管理员 */
    boolean createCompanyWithAdmin(Company company);
    
    /** 更新公司和管理员 */
    boolean updateCompanyWithAdmin(Company company);
    
    /** 获取公司及其管理员档案信息 */
    Company getCompanyWithAdminProfile(Company company);
    
    /** 删除公司（硬删除，同时处理相关档案） */
    boolean delete(Long companyId);
    
    /** 获取公司的所有员工档案 */
    List<org.example.entity.EmployeeProfile> getCompanyEmployees(Long companyId);
    
    /** 获取公司的员工数量 */
    int getCompanyEmployeeCount(Long companyId);
    
    /** 根据用户ID和公司ID获取员工档案 */
    org.example.entity.EmployeeProfile getEmployeeProfile(Long userId, Long companyId);
}
























